#ifndef __APP_DEVICE_H__
#define __APP_DEVICE_H__

#include <pthread.h>
#include <unistd.h>
#include <fcntl.h>
#include "app_buffer.h"


#define DEV_FILE_NAME "/dev/ttyS1"  //生产设备文件名称
// #define TEST_FILE_NAME "/home/cherry/Gateway/dev_test_file" //测试文件名称

/*预处理函数指针*/
typedef int (*pretreat_func)(char*,int);
/*设备结构体*/
typedef struct 
{
    char* file_name;                    //对应通讯外设的文件名称[附带路径]
    int dev_fd;                         //打开设备的文件描述符
    pthread_t read_pthread;             //读取设备文件的线程
    pretreat_func post_read;            //读后预处理函数
    pretreat_func pre_write;            //写前预处理函数
    buff_t* up_buff;                    //上行缓冲区
    buff_t* down_buff;                  //下行缓冲区

}app_dev_t;

/*设备初始化函数*/
app_dev_t* App_device_Init(void);

/*设备启动函数*/
int App_device_Start(app_dev_t* dev);

/*销毁设备函数*/
void App_device_destroy(app_dev_t* dev);
#endif /* __APP_DEVICE_H__ */